/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package minimundo.automobilismo;

/**
 *
 * @author Lucas
 */
import minimundo.social.Pessoa;
public class PostoGasolina {

    private Pessoa dono;
    private String endereco;
    private Bomba[] bomba = new Bomba[4];

    public PostoGasolina(){
	for(int i = 0; i < 4; i++){
	    bomba[i] = new Bomba();
	}
    }

    public void abastecer(double dinheiro, Combustivel comb){
	double custo = 0;
	int aux = 0;
	//calcula-se o volume de combustivel de acordo a quantia de dinheiro que ele deseja pagar
	double qt = dinheiro/comb.getPreco();
	//procura-se uma bomba com o combustivel desejado
	while(aux <=4 && qt != 0){
	    if((bomba[aux].getCombustivel()).equals(comb)){
		//se a quantidade pedida é maior do que a disponível naquela bomba
		if(qt > bomba[aux].getQuantidade()){
		    //ele nao vai conseguir abastecer tudo o que quer, entao so decrementa-se a quantidade
		    //de acordo ao disponivel naquela bomba e
		    //o preco a pagar é incrementado
		    custo += bomba[aux].getCombustivel().getPreco();
		    qt -= bomba[aux].getQuantidade();
		    //retira-se tudo o que pode da bomba e procura-se uma nova com o mesmo combustível
		    bomba[aux].setQuantidade(0);
		}
		else{
		    //retira-se a quantidade desejada da bomba
		    bomba[aux].setQuantidade(bomba[aux].getQuantidade() - qt);
		    //como conseguiu abastecer, a quantidade desejada passa a ser 0 e o preco é igual
		    //ao desejado pelo cliente no início do abastecimento
		    qt = 0;
		    custo = dinheiro;
		    System.out.println("Veículo abastecido com sucesso!");
		}
	    }
	    aux++;
	}
	//se a quantidade desejada ainda nao foi satisfeita, deve-se informar o cliente
	if(qt != 0){
	    System.out.println("O custo total foi de: " + custo);
	    System.out.println("Nao foi possivel completar o abastecimento\nDirija-se a outro posto!");
	}
    }

    /**
     * Método que retorna o dono
     * @return dono
     */
    public Pessoa getDono() {
	return dono;
    }

    /**
     * Método para atribuir o dono
     * @param dono
     */
    public void setDono(Pessoa dono) {
	this.dono = dono;
    }

    /**
     * Método que retorna o endereco
     * @return endereco
     */
    public String getEndereco() {
	return endereco;
    }

    /**
     * Método para atribuir o endereco
     * @param endereco
     */
    public void setEndereco(String endereco) {
	this.endereco = endereco;
    }
}
